{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "22a812de",
   "metadata": {},
   "source": [
    "### 2.示例程序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1aefc9ef",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "data  =  \n",
      " [[ 0.694565    0.42666408]\n",
      " [ 1.68353008 -0.80016643]\n",
      " [-0.25046823  0.24392224]\n",
      " [-1.13337973 -0.6112787 ]\n",
      " [ 1.76905577 -0.31025439]\n",
      " [ 2.00225511 -0.18592   ]\n",
      " [ 0.91169861  0.46995543]\n",
      " [ 0.88211794 -0.46701178]\n",
      " [ 0.75006972  0.33995342]\n",
      " [ 1.30208867 -0.72334923]]\n",
      "label =  [0 1 1 0 1 1 0 1 0 1]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Original Data')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "#from __future__ import division\n",
    "import numpy as np\n",
    "import sklearn.datasets\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(0)\n",
    "\n",
    "# load sample data\n",
    "data, label = sklearn.datasets.make_moons(200, noise=0.30)\n",
    "\n",
    "#display some samples\n",
    "print(\"data  = \",\"\\n\", data[:10, :])\n",
    "print(\"label = \", label[:10])\n",
    "\n",
    "plt.scatter(data[:,0], data[:,1], c=label)\n",
    "plt.title(\"Original Data\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b2df79fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_decision_boundary(predict_func, data, label):\n",
    "    \"\"\"画出结果图\n",
    "    Args:\n",
    "        pred_func (callable): 预测函数\n",
    "        data (numpy.ndarray): 训练数据集合\n",
    "        label (numpy.ndarray): 训练数据标签\n",
    "        散开数据，但是不在原来的数据上做修改\n",
    "    \"\"\"\n",
    "    x_min, x_max = data[:, 0].min() - .5, data[:, 0].max() + .5\n",
    "    y_min, y_max = data[:, 1].min() - .5, data[:, 1].max() + .5\n",
    "    h = 0.01\n",
    "\n",
    "    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
    "\n",
    "    Z = predict_func(np.c_[xx.ravel(), yy.ravel()])\n",
    "    Z = Z.reshape(xx.shape)\n",
    "\n",
    "    plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral)   #画出登高线并填充\n",
    "    plt.scatter(data[:, 0], data[:, 1], c=label, cmap=plt.cm.Spectral)\n",
    "    plt.title(\"Classification Result\")\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6703f1a9",
   "metadata": {},
   "source": [
    "**iteration strategy：**\n",
    "\n",
    "$$\n",
    "\\theta_j^1 = \\theta_j^0 +\\alpha\\triangledown L(\\theta)=\\theta_j^0 + \\alpha(y^i - h_\\theta(x^i)) x_j^i\n",
    "$$\n",
    "\n",
    "注意在这里我们进行迭代更新的时候，每次是随机选取了一个样本进行更新的，而非逐一遍历"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "008cad6a",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# FIXME: function sample\n",
    "\n",
    "\n",
    "def sigmoid(x):\n",
    "    return 1.0 / (1 + np.exp(-x))\n",
    "\n",
    "class Logistic(object):\n",
    "    \"\"\"logistic回归模型\"\"\"\n",
    "    def __init__(self, data, label):\n",
    "        self.data = data\n",
    "        self.label = label\n",
    "\n",
    "        # FIXME: n -> d\n",
    "        self.data_num, d = np.shape(data)\n",
    "        #迭代初始值，因为data是二维的，所以边界的参数是两个\n",
    "        self.weights = np.ones(d)\n",
    "        self.b = 1\n",
    "\n",
    "    def train(self, num_iteration=150):#默认迭代次数150，可以自定义\n",
    "        \"\"\"随机梯度上升算法\n",
    "        Args:\n",
    "            data (numpy.ndarray): 训练数据集\n",
    "            labels (numpy.ndarray): 训练标签\n",
    "            num_iteration (int): 迭代次数\n",
    "        \"\"\"\n",
    "        # 学习速率\n",
    "        alpha = 0.01\n",
    "            \n",
    "        for j in range(num_iteration):\n",
    "            data_index = list(range(self.data_num))#把数据的序号存成一个列表\n",
    "            for i in range(self.data_num):\n",
    "                #在所有数据序号产生一个随机抽取一个，存入rand_index\n",
    "                rand_index = int(np.random.uniform(0, len(data_index)))\n",
    "                #误差函数y-h \n",
    "                error = self.label[rand_index] - \\\n",
    "                    sigmoid(sum(self.data[rand_index] * self.weights + self.b))\n",
    "                #迭代表达式\n",
    "                self.weights += alpha * error * self.data[rand_index]\n",
    "                self.b += alpha * error\n",
    "                del(data_index[rand_index])\n",
    "\n",
    "    def predict(self, predict_data):\n",
    "        \"\"\"预测函数\"\"\"\n",
    "        #map函数将定义的lambda一一映射到测试\n",
    "        result = list(map(lambda x: 1 if sum(self.weights * x + self.b) > 0 else 0,\n",
    "                     predict_data))\n",
    "        return np.array(result)#分类结果输出为数组\n",
    "    \n",
    "    \n",
    "logistic = Logistic(data, label)\n",
    "logistic.train(200)\n",
    "plot_decision_boundary(lambda x: logistic.predict(x), data, label)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
